<?php

header('Content-type:text/html;charset=utf8');
/**
 * 
 * @authors Xiao An (own@80.com)
 * @date    2015-05-30 20:55:31
 * @file  [hdc50] [fuxi] [0527]
 */

// 1、变量赋值 自增  
//----------------------------------------------------------------->>>
// ++$a:+号在变量 前面 表示$a先自增1 然后把自增后的值赋值给他人 
//$a++:+号在变量 后面  表示$a先值赋值给别人 赋值完之后 自己在自增1
$a=1;
$b=++$a;
$c=$a++;
echo $a.'<br/>'.$b.'<br/>'.$c;

echo '<hr/>';


// 变量的传址：
// &$a 表示变量$a指向的地址
$a=12;
$b=&$a; 
$a=5;
echo $b;



// 2、表达式相等的计算
//-------------------------------------------------------------------->>>
$d = 1;//数据类型
$e ='1';//字符串类型

// 把结果打印出来 返回的类型是boolean值 打印出来的结果显示为true 真
// 表示这两个值只比较里面的值是否为1  如果为1 就相等 不考虑类型
var_dump($d==$e).'<br/>';
// 把结果打印出来 返回的类型是boolean值 打印出来的结果显示为false 真
// 表示这两个值不仅要比较大小 是否相等要好看他们的类型是发一致 当全部一样的时候 那么他们的相等  如果为1 就相等 不考虑类型
var_dump($d===$e);

 
// if的另外一种写法:

// if($d==$e | | $e='1'):endif;

// // --等同于以下的表达式--

// if($d==$e || $e='1'){

// }else{

// }
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


//3、三元表达式
//------------------------------------------------------------------>>>

//判断用户所传递的page是否存在 
// 如果存在那么就把所传递的这个page先转换成整数 然后在赋值给变量： $selfPage 
// 如果不存在那么久把 1 赋值给变量： $selfPage 

$selfPage = isset($_GET['page'])?(int)$_GET['page']:1;

// 上面的写法等同于下面if的写法：

if(isset($_GET['page'])){
	$selfPage = int($_GET['page']);
}else{
	$selfPage = 1 ;
}

// 4、字符串的连接
//----------------------------------------------------------------------->>>

//双引号里的变量还是可以正常显示出来 并和一般的字符串自动区分开来
// 但如果是单引号的话，就会将里面的内容完全以字符串形式输出给浏览器


$str1 = "Hello World!";
$str2 = "Welcome to HutaoW's BLOG!";

echo $str1.$str2.'<br/>';

$author = "HutaoW";
$str = "Welcome to {$author}'s BLOG!";

echo $str.'<br/>';

$class='curten';

$t='http://www.baidu.com';

?>

<!-- 把以下的链接用字符串的形式转连接起来 -->

<!-- <a class="curten" href="http://www.baidu.com">百度</a> -->

<br/>
 
<?php

//双引号套外面
echo "<a class='" .$class.  "' href='"  .$t.  "'>百度</a>".'<br/>';

// 单引号套外面
echo '<a class="' .$class. '" href="' .$t. '">百度</a>'.'<br/>';


// 5、while循环语句
//------------------------------------------------------------------------->>>

// while循环 首先要有一个变量  然后在有一个判断的条件 while主体里面是表达式
//while循环可以和for循环等同  当执行while循环的时候它是自上而下执行的 

$r = 20;
while($r>10){
	// $r--; //输出结果为19-10
	echo $r.'<br/>';
	$r--;//输出结果为20-11
}
echo '<hr/>';

// 定义一个变量为20;开始循环 循环的条件为 真的时候
// 一直循环输出$y  然后给$y自减 1  当$y自减到 小于1的时候 跳出循环本体
$y = 20;
while(true){
	echo $y.'<br/>';
	if($y--<1){
		break;//结束掉整个循环
	}

}

// 6、php的嵌套    html
//-------------------------------------------------------------------------->>>

// 利用while循环设置一个10行的表格 

// 一： 用echo 的方式输出表格

echo '<table border="1" width="100%">';
$u = 0;
while($u<10){

	// 隔行变色的效果  给$u取2的余数 如果取得余数为偶数的时候 
	// 也就是布尔值为 真的时候 把这一行给它加样式让它变成蓝色 否则就不加样式
	$style = $u%2?'style="background:blue"':'';

	echo "<tr ".$style. "><td>&nbsp;</td></tr>";
	$u++;
}

echo '</table>';
?>

<!-- 二用嵌套的方式输出表格 -->

<!-- html嵌套在php里面一定要符合php的语法要求 -->

<table border="1" width="100%">
	
<?php
$i = 1;
while($i<10)
{
	// $style = $i%2?'style="background:blue"':'';
	?>
<!-- html代码写在两个php中间 -->

	<tr >
		<td>&nbsp;</td>
	</tr>
<!-- html代码写在两个php中间 -->
<?php
	$i++;
}

	?>

</table>


<?php



// 7、echo 可以输出多个参数
//--------------------------------------------------------------------->>>

// a、不考虑空格 直接输出

echo 'a 

b'.'<br/>';
?>

<?php


//b、 嵌套 需要满足php的代码要求

// 如果if里面的判断为真的话 就输出主体函数里面的表达式

if(1){

?>
<h1><?php echo 'ok'.'<br/>';?></h1>
<?php

}


// c、嵌套js  

//一个表达式里面不能都用 单引号 或不能都用双引号 必须要嵌套使用 
//当外面的是单引号的时候  里面的就用双引号  
//当外面的是双引号的时候  里面的就用单引号  如以下例子：
echo '<script>document.write("笨蛋")</script>'.'<br/>';



// 在输出里面加入js代码：提示密码错误 等待2秒后跳转到百度。。。
// echo '<script>
// 	document.write("您输入的密码错误。。。。网页即将跳转。。。");
// 	setTimeout(function(){
// 		location.href="http://bbs.houdunwang.com";
// 	},2000)
	
// </script>'.'<br/>';

$a=12;
$a=34;
$a=8;
echo $a;

var_dump($a).'<br/>';


// d、 $_GET[]  $_POST[] 输出 ：

// $_GET[]   是通过浏览器地址传递的

// $_POST[]  是超全局变量  加密传递的 

//一；http://localhost/hdc50/fuxi/0527/1.php?cid=50

// echo '您要看的是第'.$_GET['cid'].'号栏目'.'<br/>';

//二；表单 


// echo '您提交的标题是:'.$_POST['title'].'<br/>'.'您提交的内容是：'.$_POST['body'];


// 检测PHP版本

echo PHP_VERSION.'<br/>';


// 8、定义一个常量
//------------------------------------------------------------------------->>>

define('z', 'http://www.houdunwang.com');


// 检测常量是否存在  
// defined — 检查某个名称的常量是否存在  如果判断是存在的 那么为真 就输出常量的内容：http://www.houdunwang.com
if(defined('z')){
	echo z;
}


// 9、变量的检测和删除  
//------------------------------------------------------------------------------->>>
//  isset — 检测变量是否设置   
//unset — 释放给定的变量  删除变量 

$a=2;/*定义一个变量*/
// unset($a);删除一个变量
// var_dump($a);/*打印变量  显示的结果为null 说明变量已经被删除了*/
isset($a);//检测变量是否被设置
var_dump($a);


if(null){
	echo 'ok';
}


//10、设置变量 的几种方法：
//-------------------------------------------------------------------------------->>>

// 设置变量的第一种方法：

// settype — 设置变量的类型 
$b='123';
settype($b,'int');
var_dump($b);


// 设置变量的第二种方法：

//如果变量是字符串型的  给它设置成整数型 那么输出的结果是 0 
$b = intval($b);
var_dump($b);

// 设置变量的第三种方法：直接在变量前加 int(整数型)
$b = (int)$b;
var_dump($b);



//11、循环显示从1-100的偶数 和 奇数；
//----------------------------------------------------------------------------->>>

// 循环 1-100的偶数 让它显示出来

$a=1;
while($a<100){
	$a++;
	//判断 当取2的余数为整数的时说明返回值为true 就跳出循环 把值赋值给$a 
	//然后 $a在自增  同时在进行下次循环   一直到$a<100的时候 
	if($a%2){
		continue;
	}
	echo $a.'&nbsp';
}

echo '<hr/>';

// 循环1-100的奇数 让它显示出来


$b = 0;
while($b<100){

	$b++;
	//判断 当取2的余数为false的时  就跳出循环 把值赋值给$a 
	//然后 $a在自增  同时在进行下次循环   一直到$a<100的时候 
	if($b%2==false){

		continue;
	}
	echo $b.'&nbsp';
}

echo '<hr/>';




//12、回调函数

//---------------------------------------------------------------->>>

// 建造一个工厂 计算 $num1+$num2  然后在下面在传两个参数  8 9 放到工厂里面计算 然后返回一个值 
//把这个返回值 赋值给了 $f  然后在浏览器上输出$f
function run($num1,$num2){

	return $num1+$num2;

}

$f=run(8,9);

echo ($f);

echo '<hr/>';


$m=1;
$n=7;


// 把参数从外面传进来的第一种方式：

//用global 定义变量的全局使用范围

function func($m,$n){

	//global  定义函数的全局变量 把函数从外部引入进来  
	//它可以等同于 &$m  &$n  
	global $m;
	global $n;

	$m++;
	$n++;
}

// 把参数从外面传进来的第二种方式：

// 直接用传址的方式：

// function func(&$m,&$n){

// 	$m++;
// 	$n++;

// }

func($m,$n);

echo $m;

echo $n;

echo '<hr/>';



//13、 静态变量
//------------------------------------------------------------------------------->>>

//静态变量static:

//1) 变量声明只执行一次
//2) 函数执行完后，变量不释放=变量的值一直存在变量里面

function ur(){

	static $v=1;
	$v++;
	echo $v.'<br/>';

}

ur();//第一次执行的结果是2
ur();//变量不释放  变量依然保持为2 然后在把值放到函数里面执行$v++;本次运算的结果是 $v=3;
ur();//本次运算的结果是 4
ur();//本次运算的结果是 5


// 在函数里面定义一个静态变量输出的结果是不一样的  

function tt(){

	$c = 5;
	$c++;
	echo $c.'<br/>';
}

tt();//当一次执行函数里面的运算的时候  执行 $c++; 的到的结果是 $c=6;
tt();//由于变量已经释放了 所以当在运行函数里面的运算的时候 $c的值还是5  在执行 $c++  运算的结果是 $c=6;

echo '<hr/>';

//14、函数要有单一职责，一个函数只完成一个功能
//---------------------------------------------------------------------------------------->>>
//$q有默认值，你传参数时使用默认值类似于input表单的value

// 利用switch语句计算两个变量的加减乘除


// 这里的参数： 第一个参数是要运算的 数字  第二个参数是要运算的 数字  第三个参数是可以自己设置为默认的 运算符 如 + 号
function yy($o,$p,$q='*'){

	// 利用switch语句判断函数的运行方式：
	switch ($q) {
		//如果是 + 的时候 运行下面的表达式
		case '+':
			//返回一个运算加法的值
			return $o + $p;
			break;
		case '-':
			//返回一个运算减法的值
			return $o - $p;
			break;
		case '*':
		//返回一个运算乘法的值
			return $o * $p;
			break;
		case '/':
		//返回一个运算除法的值
			return $o / $p;
			break;
		default:
			return '运算不合法';
			break;
	}


}

	//这里的参数： 第一个参数是要运算的 数字  第二个参数是要运算的 数字  第三个参数是 运算符 

	echo yy(89,87,'-');

echo '<hr/>';


// 15、传址
//------------------------------------------------------------------------------->>>
//传址，多个符号（变量名）共同指向一个内存中的数据

function rt(&$l){

	$l++;
	return $l;


}

$l=23;
$u = rt($l);
echo $u.'<br/>';//运行函数的结果
echo $l;  //因为&$l传址了 所有传址后 $l 的值不被释放  所有在运行完回调函数里面的值运算的时候  它还把值存在内存中

echo '<hr/>';

//16、不能同时定义相同名称的函数
//-------------------------------------------------------------------------------->>>

function hdw1(){
	echo 'hdw1..........';
}
function hdw2(){
	echo 'hdw2...........';
}
function hdw3(){
	echo 'hdw3...........';
}

$a='hdw1';
$b='hdw2';
$a();
$b();

echo '<hr/>';


// 17、函数的递归

function ruun($hd){

	if($hd>1){
		$hs = $hd*ruun($hd-1);
	}else{
		$hs=$hd;
	}
	return $hs;

}

echo(ruun(15));

echo '<hr/>';


// 18、include 与 require 区别
//----------------------------------------------------------------------->>>

// include 报警告继续执行
// require 报致命错误 停止执行
// require 'db.php';
// include 'db.php';

// require_once 'db.php';

//19、时间
//----------------------------------------------------------------------->>>

//获取时区

echo date_default_timezone_get();

// 设置当前东八区时区

echo date_default_timezone_set('PRC').'<br/>';

// 显示当前时间
// 大写的字面开头的话  是显示的是具体的年份 如 2015  
echo date('Y/m/d H/i/s').'<br/>';

//小写的话 第一个参数 显示的是年份的简写 如 15 代表着 2015年 
//小写的第二个参数  显示的是时分秒  时间的制式是 12个小时的 制式
echo date('y-m-d h-i-s').'<br/>';
// 获取时间戳
// 从 Unix 纪元（格林威治时间 1970 年 1 月 1 日 00:00:00）到当前时间的秒数。 
echo time().'<br/>';//显示的是毫秒数
//eg:
$video = array(

	'name'=>'2012',
	'addtime'=>'1433074461',
	);

	// 添加指定的时间戳
echo date('Y/m/d H/i/s',$video['addtime']).'<br/>';
// 获得当前时间的前一天的是时间
echo date('Y/m/d H:i:s',time()-3600).'<br/>';

// 获得微妙时间
echo microtime(true);

echo '<hr/>';

// 计算脚本执行的时间
// 1、首先获取当前的事件
//2、循环设定的时间
$start = microtime(true);

for ($i=0; $i < 2000000; $i++) { 
	echo '';
}
// 在输出当前时间
$end = microtime();

// 计算时间差
echo ($end-$start).'秒';


$str = "2015-2-22 9:22:21";

// ISO标准时间转换成时间戳

$T = strtotime($str);

// 然后输出当前时间

echo date('Y-m-d H-i-s',$T);

echo '<hr/>';



// getdate — 取得日期／时间信息 
$i = getdate();

print_r($i);


// 20、页面的css背景颜色切换
//-------------------------------------------------------------------------------------->>>


$css = array(
	'1.css',
	'2.css'
	);

echo '<hr/>';


// 21、取整
//-------------------------------------------------------------------------------------->>>

// 向上取整
$s = 1.298;

echo ceil($s).'<br/>';

//向下取整
$d = 8.9998;

echo floor($d);

echo '<hr/>';

// 取随机数
// 取1-100的随机数
echo (mt_rand(1,100)).'<br/>';


// 22、字符串的操作
//------------------------------------------------------------------------------------>>>
// 取中文的字符串的长度 //utf8  3    gbk 2  
// 因为strlen对宽字节，不能很好的计算长度  php发布了一个新扩展mbstring
// mb_strlen() 仅仅用来获取中文字符的长度的  strlen 是用来获取单个符号的长度的
$g = '中华人民共和国';
$r = ' jahigneihoengalgoagagaiuajgnnc ';

// 第一个参数 是 需要取得的字符串  第二个参数是utf-8编码
echo mb_strlen($g, 'utf8').'个字符'.'<br/>';
echo mb_strlen($g,'utf-8').'个字符'.'<br/>';

// 获取单个符号的长度
echo strlen($r).'个字符'.'<br/>';


// 23、trim的使用   

// trim 删除首尾的空字符的

$e = 'jahig';

// 删除首尾空白字符后的字符长度
// echo strlen(trim($e)).'<br/>';
// echo $e.'<br/>';
echo trim($e,'efao');
























?>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title>Document</title>
	<!-- 引入css随机样式 -->
	<link rel="stylesheet" href="<?php echo $css[mt_rand(0,1)];?>">
</head>
<body>
	<!-- 给css取随机数 -->
	<!-- <?php echo $css[mt_rand(0,1)];?> -->
</body>
</html>



